// var i;
// var $resKeeper = require("./ResKeeper");
// var $logic_ChildMoveEvent = require("./Logic_ChildMoveEvent");
// var $bundleConfig = require("./BundleConfig");
// var $logic_GetEquip = require("./Logic_GetEquip");
// var $uIManager = require("./UIManager");
// var $uIConfig_Game = require("./UIConfig_Game");
// var $const_Game = require("./Const_Game");
// var $gameGlobalVariable = require("./GameGlobalVariable");
// var $commonUtils = require("./CommonUtils");
// var $eventManager = require("./EventManager");
// var $evenType = require("./EvenType");
// var $qiPaoTween = require("./QiPaoTween");
// var $excel = require("./Excel");
// var $playerDataManager = require("./PlayerDataManager");
// var M = cc._decorator;
// var E = M.ccclass;
// var x = M.property;
// var C =
//     (M.inspector,
//     (function (e) {
//         function t() {
//             var t = (null !== e && e.apply(this, arguments)) || this;
//             t.node_cellFather = null;
//             t.equipIcon = null;
//             t.qiPaoNode = null;
//             t.level5TipNode = null;
//             t.level5TipLabel = null;
//             t.banTouOpacity = 155;
//             t.tipNode = null;
//             t.unLockColor = new cc.Color(247, 41, 166);
//             return t;
//         }
//         __extends(t, e);
//         Object.defineProperty(t.prototype, "equipData", {
//             get: function () {
//                 return this._equipData;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         t.prototype.onLoad = function () {
//             var e = this;
//             this._loadRes(
//                 $bundleConfig.BundleNames.Game,
//                 "res/bg/" + $gameGlobalVariable.GameGlobalVariable.getSceneId(),
//                 cc.SpriteFrame
//             ).then(function (t) {
//                 e.node_cellFather.children.forEach(function (e) {
//                     e.children[0].getComponent(cc.Sprite).spriteFrame = t;
//                 });
//             });
//             this.tipNode = this.node.getChildByName("upLevel5Tip");
//             if (this.tipNode) {
//                 this.tipNode.active = !1;
//             }
//         };
//         t.prototype.onEnable = function () {
//             $eventManager.EventMgr.addEventListener($evenType.EVENT_TYPE.Game_Show_Level5Tip, this.ShowTipTween, this);
//         };
//         t.prototype.onDisable = function () {
//             $eventManager.EventMgr.rmEventListener($evenType.EVENT_TYPE.Game_Show_Level5Tip, this.ShowTipTween, this);
//         };
//         t.prototype.StartSet = function (e, t, o, n, i, a) {
//             var r = this;
//             this._equipData = e;
//             this.isGeZiType = t;
//             this.showPaiZi = a;
//             if (!this.childMoveArray) {
//                 this.childMoveArray = [];
//                 this.node_cellFather.children.forEach(function (e) {
//                     var t = e.getComponent($logic_ChildMoveEvent.default);
//                     if (!t) {
//                         t = e.addComponent($logic_ChildMoveEvent.default);
//                     }
//                     t.StartSet(o, n, i);
//                     r.childMoveArray.push(t);
//                 });
//             }
//             this.ResetShow();
//             this.ShowQiPao(e.isHaveQiPao);
//             this.tipNode.active = !1;
//         };
//         t.prototype.ShowQiPao = function (e) {
//             if (this.qiPaoNode) {
//                 if (e) {
//                     this.qiPaoNode.active = !0;
//                     if (0 == this.qiPaoNode.childrenCount) {
//                         var t = this;
//                         this._loadRes(
//                             $bundleConfig.BundleNames.Game,
//                             "item/qiPao_" + this.equipData.pfbName,
//                             cc.Prefab
//                         ).then(function (e) {
//                             var o = cc.instantiate(e);
//                             t.qiPaoNode.addChild(o);
//                             o.setPosition(0, 0);
//                             o.getComponent($qiPaoTween.default).StartSet(t.isGeZiType);
//                         });
//                     }
//                 } else {
//                     this.qiPaoNode.active = !1;
//                 }
//             }
//         };
//         t.prototype.ShowBuyView = function (e, t) {
//             var o = this;
//             if (this.qiPaoNode && this.qiPaoNode.active) {
//                 var n = this;
//                 var i = new $const_Game.VideoBuyOneData();
//                 i.furidSprite = null;
//                 if (this.isGeZiType) {
//                     i.titleStr = "额外背包格子";
//                     i.infoStr = "是否观看视频，获得额外的背包格子";
//                 } else {
//                     i.titleStr = "视频获得3级水果";
//                     i.infoStr = "是否观看视频，视频获得3级水果";
//                     i.furidSprite = this.equipIcon.getComponent(cc.Sprite).spriteFrame;
//                 }
//                 i.pfbName = this._equipData.pfbName;
//                 i.clickCallBack = function () {
//                     n.equipData.isHaveQiPao = !1;
//                     o.qiPaoNode.active = !1;
//                     if (o.isGeZiType) {
//                         $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.ResetGameBagAI);
//                     }
//                     if (t) {
//                         t();
//                     }
//                 };
//                 i.failCallBack = function () {
//                     if (e) {
//                         e();
//                     }
//                 };
//                 $uIManager.default.open($bundleConfig.BundleNames.Game, $uIConfig_Game.UIView_Game.UI_VideoBuyOne, i);
//             } else {
//                 if (t) {
//                     t();
//                 }
//             }
//         };
//         t.prototype.DragEndLockCell = function (e) {
//             var t = this;
//             this.lockCellArray = e;
//             this._equipData.lockCellIndex = [];
//             if (e) {
//                 e.forEach(function (e) {
//                     t._equipData.lockCellIndex.push(e.cellData.cellIndex);
//                 });
//             }
//         };
//         t.prototype.GetGeZi = function () {
//             return this.node_cellFather;
//         };
//         t.prototype.ResetShow = function () {
//             this.node.getComponentInChildren(cc.Label).string = "";
//             this.LoadFruitSpriteFrame();
//             if (!this.equipData.lockCellIndex || 0 == this.equipData.lockCellIndex.length) {
//                 var e = Math.random();
//                 var t = 0;
//                 if (e > 0.66) {
//                     t = 20;
//                 } else {
//                     if (e < 0.33) {
//                         t = -20;
//                     }
//                 }
//                 this.node.angle = t;
//             }
//         };
//         t.prototype.LoadFruitSpriteFrame = function () {
//             return __awaiter(this, void 0, void 0, function () {
//                 var e;
//                 var t = this;
//                 return __generator(this, function (o) {
//                     switch (o.label) {
//                         case 0:
//                             e = this.equipIcon.getComponent(cc.Sprite);
//                             this.node_cellFather.children.forEach(function (e) {
//                                 e.children[0].getComponent(cc.Sprite).enabled = t.equipData.equipLevel <= -1;
//                             });
//                             if (!this.itemPaiZi) {
//                                 this.itemPaiZi = this.showPaiZi(this.equipIcon);
//                             }
//                             return this.equipData.equipLevel <= -1
//                                 ? ((e.spriteFrame = null), (this.itemPaiZi.node.active = !1), [3, 3])
//                                 : [3, 1];
//                         case 1:
//                             return [
//                                 4,
//                                 this._loadRes(
//                                     $bundleConfig.BundleNames.Common,
//                                     "res/player/" +
//                                         $logic_GetEquip.default.I.GetEquipUpData(
//                                             this.equipData.shuiguoId,
//                                             this.equipData.equipLevel
//                                         ).shuiguoimg,
//                                     cc.SpriteFrame
//                                 ).then(function (t) {
//                                     e.spriteFrame = t;
//                                 })
//                             ];
//                         case 2:
//                             o.sent();
//                             this.itemPaiZi.node.active = !0;
//                             this.itemPaiZi.StartSet(this.equipData.equipLevel, this.equipData.shuiguoId);
//                             o.label = 3;
//                         case 3:
//                             if (4 == this.equipData.equipLevel) {
//                                 $commonUtils.default.LoadLevel5Effect(
//                                     this.equipData.shuiguoId,
//                                     null,
//                                     null,
//                                     this._loadRes.bind(this),
//                                     function (e) {
//                                         e.parent = t.node;
//                                         e.setPosition(0, 0);
//                                         e.setSiblingIndex(1);
//                                     },
//                                     function (e) {
//                                         e.parent = t.node;
//                                         e.setPosition(0, 0);
//                                         e.setSiblingIndex(3);
//                                     }
//                                 );
//                             }
//                             return [2];
//                     }
//                 });
//             });
//         };
//         t.prototype.SetCanClick = function (e, t) {
//             if (void 0 === t) {
//                 t = !1;
//             }
//             this.childMoveArray.forEach(function (t) {
//                 t.SetCantClick(e);
//             });
//             if (t) {
//                 this.equipIcon.opacity = e ? 255 : this.banTouOpacity;
//             }
//         };
//         t.prototype.onDestroy = function () {
//             if (this && this.equipIcon) {
//                 this.equipIcon.destroy();
//             }
//         };
//         t.prototype.ShowTipTween = function (e) {
//             if (
//                 this.tipNode &&
//                 this.equipData.equipLevel == $gameGlobalVariable.GameGlobalVariable.normalMaxLevel - 1
//             ) {
//                 if (e.isShow && $logic_GetEquip.default.I.GetZaZhongId(this.equipData.shuiguoId) == e.shuiGuoId) {
//                     var t =
//                         $logic_GetEquip.default.I.GetMaxLevel(this.equipData.shuiguoId) ==
//                             $gameGlobalVariable.GameGlobalVariable.zaZhongMaxLevel ||
//                         $logic_GetEquip.default.I.GetMaxLevel(e.shuiGuoId) ==
//                             $gameGlobalVariable.GameGlobalVariable.zaZhongMaxLevel;
//                     this.tipNode.active = !0;
//                     if (t) {
//                         this.tipNode.color = this.unLockColor;
//                     } else {
//                         this.tipNode.color = cc.Color.WHITE;
//                     }
//                     this.tipNode.children[0].active = !t;
//                     this.tipNode.stopAllActions();
//                     this.tipNode.runAction(
//                         cc.repeatForever(cc.sequence(cc.scaleTo(0.5, 1.1, 1.1), cc.scaleTo(0.5, 1, 1)))
//                     );
//                 } else {
//                     this.tipNode.stopAllActions();
//                     this.tipNode.active = !1;
//                 }
//             }
//         };
//         t.prototype.ShowUnLock5Tip = function (e, t, o) {
//             if (
//                 this.level5TipNode &&
//                 !this.isGeZiType &&
//                 ((this.level5TipNode.active = !1),
//                 e && this.equipData.equipLevel == $gameGlobalVariable.GameGlobalVariable.normalMaxLevel - 1)
//             ) {
//                 this.level5TipNode.y = this.equipIcon.height / 2;
//                 var n = $logic_GetEquip.default.I.GetZaZhongId(this.equipData.shuiguoId);
//                 var i = !1;
//                 t.forEach(function (e) {
//                     if (
//                         e.equipData.shuiguoId == n &&
//                         e.equipData.equipLevel == $gameGlobalVariable.GameGlobalVariable.normalMaxLevel - 1
//                     ) {
//                         i = !0;
//                     }
//                 });
//                 if (!i) {
//                     o.forEach(function (e) {
//                         if (
//                             e.equipData.shuiguoId == n &&
//                             e.equipData.equipLevel == $gameGlobalVariable.GameGlobalVariable.normalMaxLevel - 1
//                         ) {
//                             i = !0;
//                         }
//                     });
//                 }
//                 if (i) {
//                     var a = $excel.Excel.shuiguo(this.equipData.shuiguoId);
//                     var r = $excel.Excel.shuiguo(n);
//                     if (
//                         a &&
//                         0 != a.jinjieShuiGuoId &&
//                         $playerDataManager.PlayerDataMgr.GetEquipDataById(a.id).level < a.unLock
//                     ) {
//                         this.level5TipNode.active = !0;
//                         this.level5TipLabel.string =
//                             "<color=#ffffff>" +
//                             a.name +
//                             "外围养成至</c><color=#00ff00>" +
//                             a.unLock +
//                             "</c><color=#ffffff>级解锁杂交</c>";
//                     } else {
//                         if (
//                             r &&
//                             0 != r.jinjieShuiGuoId &&
//                             $playerDataManager.PlayerDataMgr.GetEquipDataById(r.id).level < r.unLock
//                         ) {
//                             this.level5TipNode.active = !0;
//                             this.level5TipLabel.string =
//                                 "<color=#ffffff>" +
//                                 r.name +
//                                 "外围养成至</c><color=#00ff00>" +
//                                 r.unLock +
//                                 "</c><color=#ffffff>级解锁杂交</c>";
//                         }
//                     }
//                 }
//             }
//         };
//         __decorate([x(cc.Node)], t.prototype, "node_cellFather", void 0);
//         __decorate([x(cc.Node)], t.prototype, "equipIcon", void 0);
//         __decorate([x(cc.Node)], t.prototype, "qiPaoNode", void 0);
//         __decorate([x(cc.Node)], t.prototype, "level5TipNode", void 0);
//         __decorate([x(cc.RichText)], t.prototype, "level5TipLabel", void 0);
//         return __decorate([E], t);
//     })($resKeeper.default));
// exports.default = C;

// import ResKeeper from "./ResKeeper";
// import Logic_ChildMoveEvent from "./Logic_ChildMoveEvent";
// import {BundleNames} from "./BundleConfig";
// import  Logic_GetEquip from "./Logic_GetEquip";
// import UIManager from "./UIManager";
// import { GameGlobalVariable } from "./GameGlobalVariable";
// import CommonUtils from "./CommonUtils";
// import {EventMgrInstance} from "./EventManager";
// import {EVENT_TYPE} from "./EvenType";
// import QiPaoTween from "./QiPaoTween";
// import { Excel } from "./Excel";
// import { PlayerDataMgr } from "./PlayerDataManager";
// import { VideoBuyOneData } from "./Const_Game";
// import { UIView_Game } from "./UIConfig_Game";


// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名：EquipComponent
//  */
// @ccclass
// class Item_GameEquip extends ResKeeper {
//     @property(cc.Node)
//     public node_cellFather: cc.Node = null;

//     @property(cc.Node)
//     public equipIcon: cc.Node = null;

//     @property(cc.Node)
//     public qiPaoNode: cc.Node = null;

//     @property(cc.Node)
//     public level5TipNode: cc.Node = null;

//     @property(cc.RichText)
//     public level5TipLabel: cc.RichText = null;

//     public banTouOpacity: number = 155;
//     public tipNode: cc.Node = null;
//     public unLockColor: cc.Color = new cc.Color(247, 41, 166);
//     private _equipData: any;
//     public isGeZiType: boolean;
//     private showPaiZi: any;
//     private childMoveArray: any[];
//     public lockCellArray: any[];
//     private itemPaiZi: any;

//     /**
//      * 获取装备数据
//      * 建议方法名：getEquipData
//      */
//     get equipData(): any {
//         return this._equipData;
//     }

//     /**
//      * 加载时调用
//      * 建议方法名：onComponentLoad
//      */
//     public onLoad(): void {
//         const self = this;
//         this._loadRes(
//             BundleNames.Game,
//             "res/bg/" + GameGlobalVariable.getSceneId(),
//             cc.SpriteFrame
//         ).then((spriteFrame: cc.SpriteFrame) => {
//             self.node_cellFather.children.forEach((child: cc.Node) => {
//                 child.children[0].getComponent(cc.Sprite).spriteFrame = spriteFrame;
//             });
//         });

//         this.tipNode = this.node.getChildByName("upLevel5Tip");
//         if (this.tipNode) {
//             this.tipNode.active = false;
//         }
//     }

//     /**
//      * 启用时调用
//      * 建议方法名：onComponentEnable
//      */
//     public onEnable(): void {
//         EventMgrInstance.addEventListener(EVENT_TYPE.Game_Show_Level5Tip, this.ShowTipTween, this);
//     }

//     /**
//      * 禁用时调用
//      * 建议方法名：onComponentDisable
//      */
//     public onDisable(): void {
//         EventMgrInstance.rmEventListener(EVENT_TYPE.Game_Show_Level5Tip, this.ShowTipTween, this);
//     }

//     /**
//      * 初始化设置
//      * 建议方法名：initializeSettings
//      */
//     public StartSet(equipData: any, isGeZiType: boolean, o: any, n: any, i: any, showPaiZi: any): void {
//         this._equipData = equipData;
//         this.isGeZiType = isGeZiType;
//         this.showPaiZi = showPaiZi;

//         if (!this.childMoveArray) {
//             this.childMoveArray = [];
//             this.node_cellFather.children.forEach((child: cc.Node) => {
//                 let childMoveEvent = child.getComponent(Logic_ChildMoveEvent);
//                 if (!childMoveEvent) {
//                     childMoveEvent = child.addComponent(Logic_ChildMoveEvent);
//                 }
//                 childMoveEvent.StartSet(o, n, i);
//                 this.childMoveArray.push(childMoveEvent);
//             });
//         }

//         this.ResetShow();
//         this.ShowQiPao(equipData.isHaveQiPao);
//         this.tipNode.active = false;
//     }

//     /**
//      * 显示气泡
//      * 建议方法名：displayBubble
//      */
//     public ShowQiPao(isHaveQiPao: boolean): void {
//         if (this.qiPaoNode) {
//             if (isHaveQiPao) {
//                 this.qiPaoNode.active = true;
//                 if (this.qiPaoNode.childrenCount === 0) {
//                     const self = this;
//                     this._loadRes(
//                         BundleNames.Game,
//                         "item/qiPao_" + this.equipData.pfbName,
//                         cc.Prefab
//                     ).then((prefab: cc.Prefab) => {
//                         const instance = cc.instantiate(prefab);
//                         self.qiPaoNode.addChild(instance);
//                         instance.setPosition(0, 0);
//                         instance.getComponent(QiPaoTween).StartSet(self.isGeZiType);
//                     });
//                 }
//             } else {
//                 this.qiPaoNode.active = false;
//             }
//         }
//     }

//     /**
//      * 显示购买视图
//      * 建议方法名：displayPurchaseView
//      */
//     public ShowBuyView(failCallback: Function, successCallback: Function): void {
//         if (this.qiPaoNode && this.qiPaoNode.active) {
//             const self = this;
//             const videoBuyData = new VideoBuyOneData();
//             videoBuyData.furidSprite = null;

//             if (this.isGeZiType) {
//                 videoBuyData.titleStr = "额外背包格子";
//                 videoBuyData.infoStr = "是否观看视频，获得额外的背包格子";
//             } else {
//                 videoBuyData.titleStr = "视频获得3级水果";
//                 videoBuyData.infoStr = "是否观看视频，视频获得3级水果";
//                 videoBuyData.furidSprite = this.equipIcon.getComponent(cc.Sprite).spriteFrame;
//             }

//             videoBuyData.pfbName = this._equipData.pfbName;
//             videoBuyData.clickCallBack = () => {
//                 self.equipData.isHaveQiPao = false;
//                 self.qiPaoNode.active = false;
//                 if (self.isGeZiType) {
//                     EventMgrInstance.dispatchEvent(EVENT_TYPE.ResetGameBagAI);
//                 }
//                 if (successCallback) {
//                     successCallback();
//                 }
//             };

//             videoBuyData.failCallBack = () => {
//                 if (failCallback) {
//                     failCallback();
//                 }
//             };

//             UIManager.open(BundleNames.Game, UIView_Game.UI_VideoBuyOne, videoBuyData);
//         } else {
//             if (successCallback) {
//                 successCallback();
//             }
//         }
//     }

//     /**
//      * 拖动结束锁定单元格
//      * 建议方法名：lockCellsOnDragEnd
//      */
//     public DragEndLockCell(lockCellArray: any[]): void {
//         this.lockCellArray = lockCellArray;
//         this._equipData.lockCellIndex = [];

//         if (lockCellArray) {
//             lockCellArray.forEach((cell: any) => {
//                 this._equipData.lockCellIndex.push(cell.cellData.cellIndex);
//             });
//         }
//     }

//     /**
//      * 获取格子节点
//      * 建议方法名：getGridNode
//      */
//     public GetGeZi(): cc.Node {
//         return this.node_cellFather;
//     }

//     /**
//      * 重置显示
//      * 建议方法名：resetDisplay
//      */
//     public ResetShow(): void {
//         this.node.getComponentInChildren(cc.Label).string = "";
//         this.LoadFruitSpriteFrame();

//         if (!this.equipData.lockCellIndex || this.equipData.lockCellIndex.length === 0) {
//             const randomValue = Math.random();
//             let angle = 0;

//             if (randomValue > 0.66) {
//                 angle = 20;
//             } else if (randomValue < 0.33) {
//                 angle = -20;
//             }

//             this.node.angle = angle;
//         }
//     }

//     /**
//      * 加载水果精灵帧
//      * 建议方法名：loadFruitSpriteFrame
//      */
//     public async LoadFruitSpriteFrame(): Promise<void> {
//         const sprite = this.equipIcon.getComponent(cc.Sprite);
//         const self = this;

//         this.node_cellFather.children.forEach((child: cc.Node) => {
//             child.children[0].getComponent(cc.Sprite).enabled = self.equipData.equipLevel <= -1;
//         });

//         if (!this.itemPaiZi) {
//             this.itemPaiZi = this.showPaiZi(this.equipIcon);
//         }

//         if (this.equipData.equipLevel <= -1) {
//             sprite.spriteFrame = null;
//             this.itemPaiZi.node.active = false;
//         } else {
//             const spriteFrame = await this._loadRes(
//                 BundleNames.Common,
//                 "res/player/" +
//                 Logic_GetEquip.I.GetEquipUpData(
//                     this.equipData.shuiguoId,
//                     this.equipData.equipLevel
//                 ).shuiguoimg,
//                 cc.SpriteFrame
//             );
//             sprite.spriteFrame = spriteFrame;
//             this.itemPaiZi.node.active = true;
//             this.itemPaiZi.StartSet(this.equipData.equipLevel, this.equipData.shuiguoId);
//         }

//         if (this.equipData.equipLevel === 4) {
//             CommonUtils.LoadLevel5Effect(
//                 this.equipData.shuiguoId,
//                 null,
//                 null,
//                 this._loadRes.bind(this),
//                 (effect: cc.Node) => {
//                     effect.parent = self.node;
//                     effect.setPosition(0, 0);
//                     effect.setSiblingIndex(1);
//                 },
//                 (effect: cc.Node) => {
//                     effect.parent = self.node;
//                     effect.setPosition(0, 0);
//                     effect.setSiblingIndex(3);
//                 }
//             );
//         }
//     }

//     /**
//      * 设置是否可点击
//      * 建议方法名：setClickable
//      */
//     public SetCanClick(canClick: boolean, changeOpacity: boolean = false): void {
//         this.childMoveArray.forEach((childMoveEvent: any) => {
//             childMoveEvent.SetCantClick(canClick);
//         });

//         if (changeOpacity) {
//             this.equipIcon.opacity = canClick ? 255 : this.banTouOpacity;
//         }
//     }

//     /**
//      * 销毁时调用
//      * 建议方法名：onComponentDestroy
//      */
//     public onDestroy(): void {
//         if (this && this.equipIcon) {
//             this.equipIcon.destroy();
//         }
//     }

//     /**
//      * 显示提示动画
//      * 建议方法名：displayTipAnimation
//      */
//     public ShowTipTween(event: any): void {
//         if (
//             this.tipNode &&
//             this.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
//         ) {
//             if (event.isShow && Logic_GetEquip.I.GetZaZhongId(this.equipData.shuiguoId) === event.shuiGuoId) {
//                 const isMaxLevel =
//                     Logic_GetEquip.I.GetMaxLevel(this.equipData.shuiguoId) ===
//                     GameGlobalVariable.zaZhongMaxLevel ||
//                     Logic_GetEquip.I.GetMaxLevel(event.shuiGuoId) ===
//                     GameGlobalVariable.zaZhongMaxLevel;

//                 this.tipNode.active = true;
//                 this.tipNode.color = isMaxLevel ? this.unLockColor : cc.Color.WHITE;
//                 this.tipNode.children[0].active = !isMaxLevel;
//                 this.tipNode.stopAllActions();
//                 this.tipNode.runAction(
//                     cc.repeatForever(cc.sequence(cc.scaleTo(0.5, 1.1, 1.1), cc.scaleTo(0.5, 1, 1)))
//                 );
//             } else {
//                 this.tipNode.stopAllActions();
//                 this.tipNode.active = false;
//             }
//         }
//     }

//     /**
//      * 显示解锁5级提示
//      * 建议方法名：displayUnlockLevel5Tip
//      */
//     public ShowUnLock5Tip(e: any, t: Map<string, Item_GameEquip>, o: Map<string, Item_GameEquip>): void {
//         if (
//             this.level5TipNode &&
//             !this.isGeZiType &&
//             ((this.level5TipNode.active = false),
//                 e && this.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1)
//         ) {
//             this.level5TipNode.y = this.equipIcon.height / 2;
//             const zaZhongId = Logic_GetEquip.I.GetZaZhongId(this.equipData.shuiguoId);
//             let isUnlockable = false;

//             t.forEach((item: Item_GameEquip) => {
//                 if (
//                     item.equipData.shuiguoId === zaZhongId &&
//                     item.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
//                 ) {
//                     isUnlockable = true;
//                 }
//             });

//             if (!isUnlockable) {
//                 o.forEach((item: Item_GameEquip) => {
//                     if (
//                         item.equipData.shuiguoId === zaZhongId &&
//                         item.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
//                     ) {
//                         isUnlockable = true;
//                     }
//                 });
//             }

//             if (isUnlockable) {
//                 const currentFruit = Excel.shuiguo(this.equipData.shuiguoId);
//                 const zaZhongFruit = Excel.shuiguo(zaZhongId);

//                 if (
//                     currentFruit &&
//                     currentFruit.jinjieShuiGuoId !== 0 &&
//                     PlayerDataMgr.GetEquipDataById(currentFruit.id).level < currentFruit.unLock
//                 ) {
//                     this.level5TipNode.active = true;
//                     this.level5TipLabel.string =
//                         `<color=#ffffff>${currentFruit.name}外围养成至</c><color=#00ff00>${currentFruit.unLock}</c><color=#ffffff>级解锁杂交</c>`;
//                 } else if (
//                     zaZhongFruit &&
//                     zaZhongFruit.jinjieShuiGuoId !== 0 &&
//                     PlayerDataMgr.GetEquipDataById(zaZhongFruit.id).level < zaZhongFruit.unLock
//                 ) {
//                     this.level5TipNode.active = true;
//                     this.level5TipLabel.string =
//                         `<color=#ffffff>${zaZhongFruit.name}外围养成至</c><color=#00ff00>${zaZhongFruit.unLock}</c><color=#ffffff>级解锁杂交</c>`;
//                 }
//             }
//         }
//     }
// }

// export default Item_GameEquip;

import ResKeeper from "./ResKeeper";
import LogicChildMoveEvent from "./Logic_ChildMoveEvent";
import { BundleNames } from "./BundleConfig";
import LogicGetEquip from "./Logic_GetEquip";
import UIManager from "./UIManager";
import { GameGlobalVariable } from "./GameGlobalVariable";
import CommonUtils from "./CommonUtils";
import { EventMgrInstance } from "./EventManager";
import { EVENT_TYPE } from "./EvenType";
import BubbleTween from "./QiPaoTween";
import { Excel } from "./Excel";
import { PlayerDataMgr } from "./PlayerDataManager";
import { VideoPurchaseData } from "./Const_Game";
import { UIView_Game } from "./UIConfig_Game";
import ItemPaiZi from "./Item_PaiZi";
import ItemGameBagCell from "./Item_GameBagCell";

const { ccclass, property } = cc._decorator;

/**
 * 建议类名：EquipComponent
 */
@ccclass
class ItemGameEquip extends ResKeeper {
  @property(cc.Node)
  public node_cellFather: cc.Node = null;

  @property(cc.Node)
  public equipIcon: cc.Node = null;

  @property(cc.Node)
  public qiPaoNode: cc.Node = null;

  @property(cc.Node)
  public level5TipNode: cc.Node = null;

  @property(cc.RichText)
  public level5TipLabel: cc.RichText = null;

  public banTouOpacity: number = 155;
  public tipNode: cc.Node = null;
  public unLockColor: cc.Color = new cc.Color(247, 41, 166);
  private _equipData: any;
  public isGeZiType: boolean;
  private showPaiZi: any;
  private childMoveArray: LogicChildMoveEvent[];
  public lockCellArray: ItemGameBagCell[];
  private itemPaiZi: ItemPaiZi;

  /**
   * 获取装备数据
   * 建议方法名：getEquipData
   * @returns {any}
   */
  get equipData(): any {
    return this._equipData;
  }

  /**
   * 加载时调用
   * 建议方法名：onComponentLoad
   */
  public onLoad(): void {
    const self = this;
    this._loadRes(
      BundleNames.Game,
      `res/bg/${GameGlobalVariable.getSceneId()}`,
      cc.SpriteFrame
    ).then((spriteFrame: cc.SpriteFrame) => {
      self.node_cellFather.children.forEach((child: cc.Node) => {
        child.children[0].getComponent(cc.Sprite).spriteFrame = spriteFrame;
      });
    });

    this.tipNode = this.node.getChildByName("upLevel5Tip");
    if (this.tipNode) {
      this.tipNode.active = false;
    }
  }

  /**
   * 启用时调用
   * 建议方法名：onComponentEnable
   */
  public onEnable(): void {
    EventMgrInstance.addListener(EVENT_TYPE.Game_Show_Level5Tip, this.displayTipAnimation, this);
  }

  /**
   * 禁用时调用
   * 建议方法名：onComponentDisable
   */
  public onDisable(): void {
    EventMgrInstance.removeListener(EVENT_TYPE.Game_Show_Level5Tip, this.displayTipAnimation, this);
  }

  /**
   * 初始化设置
   * 建议方法名：initializeSettings
   * @param {any} equipData
   * @param {boolean} isGeZiType
   * @param {any} o
   * @param {any} n
   * @param {any} i
   * @param {any} showPaiZi
   * @returns {void}
   */
  public initializeSettings(
    equipData: any,
    isGeZiType: boolean,
    param1: any,
    param2: any,
    param3: any,
    showPaiZi: any
  ): void {
    this._equipData = equipData;
    this.isGeZiType = isGeZiType;
    this.showPaiZi = showPaiZi;

    if (!this.childMoveArray) {
      this.childMoveArray = [];
      this.node_cellFather.children.forEach((child: cc.Node) => {
        let childMoveEvent = child.getComponent(LogicChildMoveEvent);
        if (!childMoveEvent) {
          childMoveEvent = child.addComponent(LogicChildMoveEvent);
        }
        childMoveEvent.startSet(param1, param2, param3);
        this.childMoveArray.push(childMoveEvent);
      });
    }

    this.resetShow();
    this.displayBubble(equipData.isHaveQiPao);
    this.tipNode.active = false;
  }

  /**
   * 显示气泡
   * 建议方法名：displayBubble
   * @param {boolean} isHaveQiPao
   * @returns {void}
   */
  public displayBubble(isHaveQiPao: boolean): void {
    if (this.qiPaoNode) {
      if (isHaveQiPao) {
        this.qiPaoNode.active = true;
        if (this.qiPaoNode.childrenCount === 0) {
          const self = this;
          this._loadRes(
            BundleNames.Game,
            `item/qiPao_${this.equipData.pfbName}`,
            cc.Prefab
          ).then((prefab: cc.Prefab) => {
            const instance = cc.instantiate(prefab);
            self.qiPaoNode.addChild(instance);
            instance.setPosition(0, 0);
            instance.getComponent(BubbleTween).startSet(self.isGeZiType);
          });
        }
      } else {
        this.qiPaoNode.active = false;
      }
    }
  }

  /**
   * 显示购买视图
   * 建议方法名：displayPurchaseView
   * @param {Function} failCallback
   * @param {Function} successCallback
   * @returns {void}
   */
  public displayPurchaseView(failCallback: Function, successCallback: Function): void {
    if (this.qiPaoNode && this.qiPaoNode.active) {
      const self = this;
      const videoBuyData = new VideoPurchaseData();
      videoBuyData.furidSprite = null;

      if (this.isGeZiType) {
        videoBuyData.titleStr = "额外背包格子";
        videoBuyData.infoStr = "是否观看视频，获得额外的背包格子";
      } else {
        videoBuyData.titleStr = "视频获得3级水果";
        videoBuyData.infoStr = "是否观看视频，视频获得3级水果";
        videoBuyData.furidSprite = this.equipIcon.getComponent(cc.Sprite).spriteFrame;
      }

      videoBuyData.pfbName = this._equipData.pfbName;
      videoBuyData.clickCallBack = () => {
        self.equipData.isHaveQiPao = false;
        self.qiPaoNode.active = false;
        if (self.isGeZiType) {
          EventMgrInstance.emitEvent(EVENT_TYPE.ResetGameBagAI);
        }
        if (successCallback) {
          successCallback();
        }
      };

      videoBuyData.failCallBack = () => {
        if (failCallback) {
          failCallback();
        }
      };

      UIManager.open(BundleNames.Game, UIView_Game.UI_VideoBuyOne, videoBuyData);
    } else {
      if (successCallback) {
        successCallback();
      }
    }
  }

  /**
   * 拖动结束锁定单元格
   * 建议方法名：lockCellsOnDragEnd
   * @param {any[]} lockCellArray
   * @returns {void}
   */
  public dragEndLockCell(lockCellArray: any[]): void {
    this.lockCellArray = lockCellArray;
    this._equipData.lockCellIndex = [];

    if (lockCellArray) {
      lockCellArray.forEach((cell: any) => {
        this._equipData.lockCellIndex.push(cell.cellData.cellIndex);
      });
    }
  }

  /**
   * 获取格子节点
   * 建议方法名：getGridNode
   * @returns {cc.Node}
   */
  public getGridNode(): cc.Node {
    return this.node_cellFather;
  }

  /**
   * 重置显示
   * 建议方法名：resetDisplay
   * @returns {void}
   */
  public resetShow(): void {
    this.node.getComponentInChildren(cc.Label).string = "";
    this.loadFruitSpriteFrame();

    const levelNotLocked = !this.equipData.lockCellIndex || this.equipData.lockCellIndex.length === 0;
    if (levelNotLocked) {
      const randomValue = Math.random();
      this.node.angle = randomValue > 0.66 ? 20 : randomValue < 0.33 ? -20 : 0;
    }
  }

  /**
   * 加载水果精灵帧
   * 建议方法名：loadFruitSpriteFrame
   * @returns {Promise<void>}
   */
  public async loadFruitSpriteFrame(): Promise<void> {
    const sprite = this.equipIcon.getComponent(cc.Sprite);
    const self = this;

    this.node_cellFather.children.forEach((child: cc.Node) => {
      child.children[0].getComponent(cc.Sprite).enabled = self.equipData.equipLevel <= -1;
    });

    if (!this.itemPaiZi) {
      this.itemPaiZi = this.showPaiZi(this.equipIcon);
    }

    if (this.equipData.equipLevel <= -1) {
      sprite.spriteFrame = null;
      this.itemPaiZi.node.active = false;
    } else {
      const spriteFrame = await this._loadRes(
        BundleNames.Common,
        "res/player/" +
        LogicGetEquip.getInstance.getEquipUpData(
          this.equipData.shuiguoId,
          this.equipData.equipLevel
        ).shuiguoimg,
        cc.SpriteFrame
      );
      sprite.spriteFrame = spriteFrame;
      this.itemPaiZi.node.active = true;
      this.itemPaiZi.initializeSettings(this.equipData.equipLevel, this.equipData.shuiguoId);
    }

    if (this.equipData.equipLevel === 4) {
      CommonUtils.loadLevel5Effect(
        this.equipData.shuiguoId,
        undefined,
        undefined,
        this._loadRes.bind(this),
        (effect: cc.Node) => {
          effect.parent = self.node;
          effect.setPosition(0, 0);
          effect.setSiblingIndex(1);
        },
        (effect: cc.Node) => {
          effect.parent = self.node;
          effect.setPosition(0, 0);
          effect.setSiblingIndex(3);
        }
      );
    }
  }

  /**
   * 设置是否可点击
   * 建议方法名：setClickable
   * @param {boolean} canClick
   * @param {boolean} changeOpacity
   * @returns {void}
   */
  public setClickable(canClick: boolean, changeOpacity: boolean = false): void {
    this.childMoveArray.forEach((childMoveEvent: LogicChildMoveEvent) => {
      childMoveEvent.setCantClick(canClick);
    });

    if (changeOpacity) {
      this.equipIcon.opacity = canClick ? 255 : this.banTouOpacity;
    }
  }

  /**
   * 销毁时调用
   * 建议方法名：onComponentDestroy
   */
  public onDestroy(): void {
    if (this && this.equipIcon) {
      this.equipIcon.destroy();
    }
  }

  /**
   * 显示提示动画
   * 建议方法名：displayTipAnimation
   * @param {any} event
   * @returns {void}
   */
  public displayTipAnimation(event: any): void {
    if (
      this.tipNode &&
      this.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
    ) {
      if (event.isShow && LogicGetEquip.getInstance.getZaZhongId(this.equipData.shuiguoId) === event.shuiGuoId) {
        const isMaxLevel = 
        LogicGetEquip.getInstance.getMaxLevel(this.equipData.shuiguoId) === 
        GameGlobalVariable.zaZhongMaxLevel ||
          LogicGetEquip.getInstance.getMaxLevel(event.shuiGuoId) === 
          GameGlobalVariable.zaZhongMaxLevel;
        this.tipNode.active = true;
        this.tipNode.color = isMaxLevel ? this.unLockColor : cc.Color.WHITE;
        this.tipNode.children[0].active = !isMaxLevel;
        this.tipNode.stopAllActions();
        this.tipNode.runAction(
          cc.repeatForever(cc.sequence(cc.scaleTo(0.5, 1.1, 1.1), cc.scaleTo(0.5, 1, 1)))
        );
      } else {
        this.tipNode.stopAllActions();
        this.tipNode.active = false;
      }
    }

    // if (
    //   this.tipNode &&
    //   this.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
    // ) {
    //   if (event.isShow && Logic_GetEquip.I.GetZaZhongId(this.equipData.shuiguoId) === event.shuiGuoId) {
    //     const isMaxLevel =
    //       Logic_GetEquip.I.GetMaxLevel(this.equipData.shuiguoId) ===
    //       GameGlobalVariable.zaZhongMaxLevel ||
    //       Logic_GetEquip.I.GetMaxLevel(event.shuiGuoId) ===
    //       GameGlobalVariable.zaZhongMaxLevel;

    //     this.tipNode.active = true;
    //     this.tipNode.color = isMaxLevel ? this.unLockColor : cc.Color.WHITE;
    //     this.tipNode.children[0].active = !isMaxLevel;
    //     this.tipNode.stopAllActions();
    //     this.tipNode.runAction(
    //       cc.repeatForever(cc.sequence(cc.scaleTo(0.5, 1.1, 1.1), cc.scaleTo(0.5, 1, 1)))
    //     );
    //   } else {
    //     this.tipNode.stopAllActions();
    //     this.tipNode.active = false;
    //   }
    // }
  }

  /**
   * 显示解锁5级提示
   * 建议方法名：displayUnlockLevel5Tip
   * @param {any} event
   * @param {Map<string, ItemGameEquip>} t
   * @param {Map<string, ItemGameEquip>} o
   * @returns {void}
   */
  public displayUnlockLevel5Tip(event: any, t: Map<string, ItemGameEquip>, o: Map<string, ItemGameEquip>): void {
    if (
      this.level5TipNode &&
      !this.isGeZiType &&
      ((this.level5TipNode.active = false),
        event && this.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1)
    ) {
      this.level5TipNode.y = this.equipIcon.height / 2;
      const zaZhongId = LogicGetEquip.getInstance.getZaZhongId(this.equipData.shuiguoId);
      let isUnlockable = false;

      t.forEach((item: ItemGameEquip) => {
        if (
          item.equipData.shuiguoId === zaZhongId &&
          item.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
        ) {
          isUnlockable = true;
        }
      });

      if (!isUnlockable) {
        o.forEach((item: ItemGameEquip) => {
          if (
            item.equipData.shuiguoId === zaZhongId &&
            item.equipData.equipLevel === GameGlobalVariable.normalMaxLevel - 1
          ) {
            isUnlockable = true;
          }
        });
      }

      if (isUnlockable) {
        const currentFruit = Excel.shuiguo(this.equipData.shuiguoId);
        const zaZhongFruit = Excel.shuiguo(zaZhongId);

        if (
          currentFruit &&
          currentFruit.jinjieShuiGuoId !== 0 &&
          PlayerDataMgr.getEquipDataById(currentFruit.id).level < currentFruit.unLock
        ) {
          this.level5TipNode.active = true;
          this.level5TipLabel.string = `<color=#ffffff>${currentFruit.name}外围养成至</c><color=#00ff00>${currentFruit.unLock}</c><color=#ffffff>级解锁杂交</c>`;
        } else if (
          zaZhongFruit &&
          zaZhongFruit.jinjieShuiGuoId !== 0 &&
          PlayerDataMgr.getEquipDataById(zaZhongFruit.id).level < zaZhongFruit.unLock
        ) {
          this.level5TipNode.active = true;
          this.level5TipLabel.string = `<color=#ffffff>${zaZhongFruit.name}外围养成至</c><color=#00ff00>${zaZhongFruit.unLock}</c><color=#ffffff>级解锁杂交</c>`;
        }
      }
    }
  }
}

export default ItemGameEquip;